package com.hfjyz.registration.service;

import java.util.List;
import java.util.Map;

import org.springframework.validation.BindException;
import org.springframework.validation.Errors;

import com.hfjyz.registration.command.AdminLoginCommand;
import com.hfjyz.registration.command.AdminModifyCommand;
import com.hfjyz.registration.command.AdmissionCommand;
import com.hfjyz.registration.command.ModifyPasswordCommand;
import com.hfjyz.registration.command.RegistCommand;
import com.hfjyz.registration.command.ScoreSearchCommand;
import com.hfjyz.registration.command.SignUpPersonSearchCommand;
import com.hfjyz.registration.command.StatusSearchCommand;
import com.hfjyz.registration.command.VerifyCommand;
import com.hfjyz.registration.model.Apply;
import com.hfjyz.registration.model.City;
import com.hfjyz.registration.model.Depart;
import com.hfjyz.registration.model.Exam;
import com.hfjyz.registration.model.Office;
import com.hfjyz.registration.model.User;

public interface RegistService extends BaseService {

	public void add(RegistCommand user) throws Exception;

	public List<Depart> listDepart(Exam exam) throws Exception;
	
	public List<Depart> getDepartByExamId(String examId) throws Exception;

	public List<Office> listOffice(Exam exam) throws Exception;

	public List<Office> getOfficeByExamId(String examId) throws Exception;

	public List<City> listCity() throws Exception;

	public List<Apply> listApplyUser(SignUpPersonSearchCommand cmd)
			throws Exception;

	public Office getOffice(Integer officeId) throws Exception;

	public List<User> findUser(String username) throws Exception;

	public User findIdCardNo(String idCardNo, Integer examId) throws Exception;

	public Apply getApply(Integer userId, Integer examId)
			throws Exception;

	public void modifyPassword(ModifyPasswordCommand cmd, BindException errors)
			throws Exception;

	public void searchStatus(StatusSearchCommand cmd, BindException errors)
			throws Exception;

	public void initVerify(VerifyCommand cmd) throws Exception;

	public void verify(Apply apply) throws Exception;

	public void adminLogin(AdminLoginCommand cmd, BindException errors)
			throws Exception;

	public void modifyAdminPassword(AdminModifyCommand cmd, BindException errors)
			throws Exception;

	@SuppressWarnings("rawtypes")
	public Map initAdminEdit(AdminModifyCommand cmd, Errors errors)
			throws Exception;

	public void printAdmission(AdmissionCommand cmd, BindException errors)
			throws Exception;

	public void searchScore(ScoreSearchCommand cmd, BindException errors)
			throws Exception;
	
	public void printApply(Integer userId, Integer examId) throws Exception;
}
